Excel でCSVが文字化けする
いくつか原因は考えられるが、BOMによる問題のことがある ExcelではBOMがないと、Unicodeで符号化していると判定してくれない
例えばGoの csv package では utf-8 の BOM に対応しておらず、文字化けが発生する 対応法は先頭にBOMを付与すること
code:go
// read
br := bufio.NewReader(r)
bs, _ := br.Peek(3)
if bs0 == 0xEF && bs1 == 0xBB && bs2 == 0xBF { // BOMはスキップ br.Discard(3)
}
r := csv.NewReader(br)
...
// write
var buf bytes.Buffer
buf.Write([]byte{0xEF, 0xBB, 0xBF}) // 先頭にBOMを書き込み
w := csv.NewWriter(&buf)
...